package tk.mybatis.springboot.api.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONObject;
import tk.mybatis.springboot.model.Message;
import tk.mybatis.springboot.share.util.DateUtils;

/**
 * 控制层父类
 * @title:BaseContorller
 */
public class BaseController {
	/** 重定向URL */
	protected static final String REDIRECT_URL = "redirect:";

	/** 错误视图 */
	protected static final String ERROR_VIEW = "/error";

	/**
	 * 反馈成功消息
	 * @param msg
	 * @return
	 */
	protected void success(String msg, HttpServletRequest request) throws Exception {
		request.setAttribute("msg", success(msg));
	}

	/**
	 * 反馈失败消息
	 * @param msg
	 * @return
	 */
	protected void error(String msg, HttpServletRequest request) throws Exception {
		request.setAttribute("msg", error(msg));
	}

	/**
	 * 反馈成功消息
	 * @param msg
	 * @return
	 */
	public static JSONObject success(String msg) throws Exception {
		JSONObject json = new JSONObject();
		json.accumulate("code", "success");
		json.accumulate("msg", msg);
		json.accumulate("time", DateUtils.getNowTime_6());
		return json;
	}

	public static Message success(String msg, Object data) throws Exception {
		return Message.success(msg, data);
	}
	
	/**
	 * 返回msg对象
	 * @param msg
	 * @return
	 * @throws Exception
	 */
	public static Message success_msg(String msg) throws Exception {
		return Message.success(msg, null);
	}

	/**
	 * 带数据的返回
	 * @param msg
	 * @param data
	 * @return
	 * @throws Exception
	 */
	public static Message success_msg(String msg, Object data) throws Exception {
		return Message.success(msg, data);
	}

	/**
	 * 返回msg对象
	 * @param msg
	 * @return
	 * @throws Exception
	 */
	public static Message error_msg(String msg) throws Exception {
		return Message.error(msg);
	}

	/**
	 * 反馈失败消息
	 * @param msg
	 * @return
	 */
	public static JSONObject error(String msg) throws Exception {
		JSONObject json = new JSONObject();
		json.accumulate("code", "error");
		json.accumulate("msg", msg);
		json.accumulate("time", DateUtils.getNowTime_6());
		return json;
	}

	/**
	 * 反馈失败消息
	 * @param msg
	 * @return
	 */
	protected JSONObject error(String msg, int state) throws Exception {
		JSONObject json = new JSONObject();
		json.accumulate("code", "error");
		json.accumulate("msg", msg);
		json.accumulate("time", DateUtils.getNowTime_6());
		json.accumulate("state", state);

		return json;
	}

	/**
	 * 发送消息到错误视图
	 * @param request
	 * @param response
	 * @param msg
	 */
	protected String sendErrorView(HttpServletRequest request, String msg) throws Exception {
		request.setAttribute("msg", msg);
		return ERROR_VIEW;
	}

	/**
	 * 发送消息到错误视图
	 * @param request
	 * @param response
	 * @param msg
	 */
	public static void ErrorView(HttpServletRequest request, HttpServletResponse response, String msg) throws Exception {
		request.setAttribute("msg", msg);
		request.getRequestDispatcher("/error").forward(request, response);
		return;
	}

}

